package com.hqx.container;

import com.hqx.fanxing.Pair;
import com.sun.org.apache.xpath.internal.operations.String;

import java.util.Random;

public class DynamicArrayTest {
    public static void main(String[] args) {
//        DynamicArray<Double> arr = new DynamicArray<Double>();
//        Random rnd = new Random();
//        int size = 1+rnd.nextInt(100);
//        for(int i=0; i<size; i++){
//            arr.add(Math.random());
//        }
//        Double d = arr.get(rnd.nextInt(size));
//        System.out.println(indexOf(new Integer[] {1,2,3},10));
//        System.out.println(indexOf(new String[]{"小马","shan","qing"},"qing"));
//        DynamicArray<Number> numbers= new DynamicArray<>();
//        DynamicArray<Integer> ints = new DynamicArray<>();
//        ints.add(100);
//        ints.add(34);
//        numbers.addAll(ints);
//        for (int i = 0; i < numbers.size(); i++) {
//            System.out.println(numbers.get(i));
//        }
//        System.out.println(DynamicArray.indexOf(ints,34));

        /**
         * 泛型通配符只能读不能写，目的是为了保证类型安全性
         */
        /**DynamicArray<Integer> ints = new DynamicArray<>();
        DynamicArray<? extends Number> numbers = new DynamicArray<>();
        Integer a = 12;
        numbers.add(a);
        numbers.add((Number) a);
        numbers.add((Object) a);
         */
//        DynamicArray<Integer> ints = new DynamicArray<>();
//        DynamicArray<? extends Number> numbers = ints;
//        Number n = new Double(23.0);
//        Object o = "hello world";
//        numbers.add(n);
//        numbers.add(o);

//        DynamicArray<Integer> ints = new DynamicArray<Integer>();
//        ints.add(100);
//        ints.add(34);
//        DynamicArray<Number> numbers = new DynamicArray<Number>();
//        ints.copyTo(numbers);

        DynamicArray<Child> childs = new DynamicArray<>();
        childs.add(new Child(20));
        childs.add(new Child(80));

//        Child maxChild = max(childs);

    }


    public static <T> int indexOf(T[] arr, T element) {
        for (int i = 0;i<arr.length;i++) {
            if(arr[i].equals(element)) {
                return i;
            }
        }
        return -1;
    }

    /**
     * 泛型方法被调用时无需指定参数类型，jvm可以自动推断出来
     * @param first
     * @param second
     * @param <U>
     * @param <V>
     * @return
     */
    public static <U,V> Pair<U,V> makePair(U first, V second) {
        Pair<U,V> pair = new Pair<>(first,second);
        return pair;
    }
}
